#include <stdio.h>

int main(void)
{
    char buf[100] = {0};
    char *s = buf;

    char buf1[100] = {0};
    char *s1 = buf1;

    FILE *fp1 = fopen("1.txt", "r+");
    if(fp1 == NULL)
    {
        perror("fopen fail");
        return -1;
    }

    FILE *fp2 = fopen("2.txt", "r+");
    if(fp2 == NULL)
    {
        perror("fopen fail");
        return -1;
    }

    // FILE *fp3 = fopen("3.txt", "w+");
    // if(fp3 == NULL)
    // {
    //     perror("fopen fail");
    //     return -1;
    // }


    s = fgets(s, sizeof(buf), fp1);
    printf("file1:");
    while(s != NULL)
    {
        printf("%s", s);
        s = fgets(s, sizeof(buf), fp1);
    }
    if(feof(fp1))
    {
        printf("end of file1\n");
    }
    else if (ferror(fp1))
    {
        printf("fgets fp1 err!\n");
        return -1;
    }
    // fclose(fp1);

    // s = fgets(s, sizeof(buf), fp2);
    // printf("file1:");
    // while(s != NULL)
    // {
    //     printf("%s", s);
    //     s = fgets(s, sizeof(buf), fp2);
    // }
    // if(feof(fp2))
    // {
    //     printf("end of file2\n");
    // }
    // else if (ferror(fp2))
    // {
    //     printf("fgets fp2 err!\n");
    //     return -1;
    // }

    //在同时打开两个文件流读取数据情况下：需要使用两个不同buf作为文件流缓冲区
    //使用第二个fgets时一定不要用第一个buf，否则会发生段错误
    //可能是由于第一个buf已经是fp1的缓冲区了，不能再作为fp2的缓冲区了
    s1 = fgets(s1, sizeof(buf1), fp2);
    printf("file2:");
    while(s1 != NULL)
    {
        printf("%s", s1);
        s1 = fgets(s1, sizeof(buf1), fp2);
    }
    if(feof(fp2))
    {
        printf("end of file2\n");
    }
    else if (ferror(fp2))
    {
        printf("fgets fp2 err!\n");
        return -1;
    }
    fclose(fp1);
    fclose(fp2);
    // fclose(fp3);
    
    // int num = fcloseall();
    // printf("num = %d\n", num);
    return 0;
}